﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Models;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;

namespace DAL
{
    public class ProjetosDAL
    {
        private string connectionString = ConfigurationManager.ConnectionStrings["ScrumDB"].ConnectionString;

        public List<Projetos> Listar()
        {
            List<Projetos> lista = new List<Projetos>();
            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand command = connection.CreateCommand();
            command.CommandText = "SELECT CodigoProjeto,NomeProjeto,ObjetivoProjeto FROM Projetos";
            connection.Open();
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                lista.Add(
                    new Projetos
                    {
                        CodigoProjeto = reader.GetInt32(0),
                        NomeProjeto = reader.GetString(1),
                        ObjetivoProjeto = reader.GetString(2)
                    }
                    );
            }
            reader.Close();
            connection.Close();

            return lista;
        }

        public Projetos Ler(int codigoProjeto)
        {
            Projetos instancia = null;

            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand command = connection.CreateCommand();
            command.CommandText = "SELECT CodigoProjeto,NomeProjeto,ObjetivoProjeto FROM Projetos WHERE CodigoProjeto=@CodigoProjeto";
            SqlParameter parameter = command.CreateParameter();
            parameter.ParameterName = "CodigoProjeto";
            parameter.Value = codigoProjeto;
            parameter.DbType = DbType.Int32;
            command.Parameters.Add(parameter);

            connection.Open();
            SqlDataReader reader = command.ExecuteReader();
            if (reader.Read())
            {
                instancia =
                    new Projetos
                    {
                        CodigoProjeto = reader.GetInt32(0),
                        NomeProjeto = reader.GetString(1),
                        ObjetivoProjeto = reader.GetString(2)
                    };
            }
            reader.Close();
            connection.Close();

            return instancia;
        }

        public void Incluir(Projetos instancia)
        {
            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand command = connection.CreateCommand();
            command.CommandText = @"INSERT INTO Projetos (NomeProjeto,ObjetivoProjeto)
                                    VALUES(@NomeProjeto,@ObjetivoProjeto)";
            SqlParameter parameter1 = command.CreateParameter();
            parameter1.ParameterName = "NomeProjeto";
            parameter1.Value = instancia.NomeProjeto;
            parameter1.DbType = DbType.String;
            command.Parameters.Add(parameter1);

            SqlParameter parameter2 = command.CreateParameter();
            parameter2.ParameterName = "ObjetivoProjeto";
            parameter2.Value = instancia.ObjetivoProjeto;
            parameter2.DbType = DbType.String;
            command.Parameters.Add(parameter2);

            connection.Open();
            command.ExecuteNonQuery();
            connection.Close();
        }

        public void Alterar(Projetos instancia)
        {
            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand command = connection.CreateCommand();
            command.CommandText = @"UPDATE Projetos
                                    SET NomeProjeto=@NomeProjeto,
                                        ObjetivoProjeto=@ObjetivoProjeto WHERE CodigoProjeto=@CodigoProjeto";

            SqlParameter parameter1 = command.CreateParameter();
            parameter1.ParameterName = "NomeProjeto";
            parameter1.Value = instancia.NomeProjeto;
            parameter1.DbType = DbType.String;
            command.Parameters.Add(parameter1);

            SqlParameter parameter2 = command.CreateParameter();
            parameter2.ParameterName = "ObjetivoProjeto";
            parameter2.Value = instancia.ObjetivoProjeto;
            parameter2.DbType = DbType.String;
            command.Parameters.Add(parameter2);

            SqlParameter parameter3 = command.CreateParameter();
            parameter3.ParameterName = "CodigoProjeto";
            parameter3.Value = instancia.CodigoProjeto;
            parameter3.DbType = DbType.Int32;
            command.Parameters.Add(parameter3);

            connection.Open();
            command.ExecuteNonQuery();
            connection.Close();
        }

        public Projetos Excluir(int CodigoProjeto)
        {
            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand command = connection.CreateCommand();
            command.CommandText = "DELETE FROM Projetos WHERE CodigoProjeto=@CodigoProjeto";

            SqlParameter parameter = command.CreateParameter();
            parameter.ParameterName = "CodigoProjeto";
            parameter.Value = CodigoProjeto;
            parameter.DbType = DbType.Int32;
            command.Parameters.Add(parameter);

            connection.Open();
            command.ExecuteNonQuery();
            connection.Close();

            return null;
        }
    }
}
